/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.ipartek.formacion.gestformwww.modelo.interfaces;

import com.ipartek.formacion.gestformwww.modelo.beans.Contacto;
import com.ipartek.formacion.gestformwww.modelo.beans.FiltroContacto;
import com.ipartek.formacion.gestformwww.modelo.beans.excepciones.GestorFormacionExcepcion;
import java.util.ArrayList;

/**
 * Los objetos de esta clase se encargan de la entrada, salida, modificacion y
 * borrado de en la tabla de Contactos.
 * @author David
 **/
public interface IContactoDAO extends IDAO {

    /**
     * Método que inserta un contacto en la base de datos.
     * @param con Contacto que es un objeto de tipo convocatoria con los datos de la misma
     * @return boolean  Devuelve un true en caso de que la sentencis haya ejecutado bien o false en caso de que mal
     **/
    public void insertar(Contacto contacto) throws GestorFormacionExcepcion;

    /**
     * Método que elimina una Contacto de la base de datos.
     * @param sConvId String que contiene el id del Contacto a eliminar.
     * @return boolean Devuelve un true en caso de que la sentencis haya ejecutado bien o false en caso de que mal
     **/
    public void eliminar(int contId) throws GestorFormacionExcepcion;

    public void eliminarTodosContactosCandidato(int canId, int conId) throws GestorFormacionExcepcion;
    /**
     * Método que modifica un Contacto de la base de datos.
     * @param con Contacto que es un objeto de tipo Contacto con los datos del mismo
     *  @return boolean
     * Devuelve un true en caso de que la sentencis haya ejecutado bien o false en caso de que mal
     **/
    public void modificar(Contacto contacto) throws GestorFormacionExcepcion;

    /**
     * Método que ejecuta las sentencias en la base de datos.
     * @param sentencia String que contiene la Sql que se tiene que ejecutar en la bd.
     * @return boolean
     * Devuelve un true en caso de que la sentencis haya ejecutado bien o false en caso de que mal
     **/
    public ArrayList listarContacto(FiltroContacto filtro) throws GestorFormacionExcepcion;

    public int contarContacto(FiltroContacto filtro) throws GestorFormacionExcepcion;

    public Contacto getContacto(int idContacto)throws GestorFormacionExcepcion;
/**
     * Método que comprueba si un candidato tiene Contactos de una convocatoria.
     * @param idCand,idConv
     *  @return int
     * Devuelve un cero en caso de que el candidato no tenga contactos o el numero de contactos que tenga
     **/
    public int comprobarContactosCand(int idCand, int IdConv)throws GestorFormacionExcepcion;
}
